#ifndef MUSIC_H
#define MUSIC_H

#include <stdbool.h>
typedef struct interface * face_p;

#define ALL_MUSICS 5

typedef struct {
    lv_obj_t* progress_bar;
    lv_obj_t* time_label;
    int total_duration;    // 总时长（秒）
    int current_position;  // 当前位置（秒）
    int is_playing;
    time_t start_time;     // 开始播放的时间
} progress_state_t;

// 在music.h中添加旋转相关定义
typedef struct {
    lv_obj_t* circle_obj;      // 圆形容器
    lv_obj_t* music_img;       // 图片对象
    lv_timer_t* rotate_timer;  // 旋转定时器
    int current_angle;         // 当前旋转角度
    int is_rotating;           // 是否正在旋转
} music_rotate_t;

typedef struct music
{
    face_p head;
    lv_obj_t * circle_obj;
    lv_obj_t * btn_play;  // 播放
    lv_obj_t * btn_pause; // 暂停
    lv_obj_t * btn_prev;  // 上一首
    lv_obj_t * btn_next;  // 下一首
    lv_obj_t * btn_home;
    lv_obj_t * label_w;
    lv_obj_t * btn_return; // 退出
    lv_obj_t * play_obj;
    lv_obj_t * obj; // 返回主菜单栏
    bool sign_obj;  // 菜单栏标志位
    bool p_sign;
    bool need_reinit;  // 添加重新初始化标志
    int mp3;
    progress_state_t progress_state;
    lv_timer_t* progress_timer;
    music_rotate_t rotate_state;  // 旋转状态
} music_t, *music_p;


// 创建进度条UI
void create_progress_ui(music_p m_btn_p);
// 音乐界面
void music(face_p head);
// 菜单按钮事件
void menu_music(lv_event_t * e);
// 播放按钮事件
void menu_play(lv_event_t * e);
// 暂停按钮事件
void menu_pause(lv_event_t * e);
// 上一首按钮事件
void menu_prev(lv_event_t * e);
// 下一首按钮事件
void menu_next(lv_event_t * e);
// home按钮事件
void menu_home(lv_event_t * e);
// 退出按钮事件
void menu_ret(lv_event_t * e);

// 旋转定时器回调函数
void rotate_timer_cb(lv_timer_t * timer);

void create_rotating_image(music_p m_btn_p, const void* img_src);
void start_music_rotation(music_p m_btn_p);
void pause_music_rotation(music_p m_btn_p);
void stop_music_rotation(music_p m_btn_p);
void change_rotation_image(music_p m_btn_p, const void* new_img_src);
void set_rotation_speed(music_p m_btn_p, uint32_t period_ms);
void cleanup_music_rotation(music_p m_btn_p);

#endif